package com.study.pattern.strategy;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.study.pattern.IStep;

public class Step1 implements IStep {
	
	final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Override
	public void excute() {
		
	}
	
	private abstract class Duck{
		public void fly(){
			logger.debug("훨훨 날아 갑니다.");
		};
		public void quack(){
			logger.debug("우는 소리를 내요.");
		};
		public void swim(){
			logger.debug("수영을 할줄 알아요.");
		};
		public abstract void display();
	}
	
	/* 천둥오리 */
	class MallardDuck extends Duck{
		public void display(){
			logger.debug("천둥오리처럼 생겼어요.");
		};
	}
	
	class RedheadDuck extends Duck{
		public void display(){
			logger.debug("빨간머리 오리처럼 생겼어요.");
		};
	}
	
	class RubberDuck extends Duck{
		/* 고무오리는 나는 행위,우는 행위를 못하니까 빈 메소드로 오버라이딩 해야 한다.	*/
		public void fly(){};	public void quack(){};
		public void display(){
			logger.debug("고무오리처럼 생겼어요.");
		};
	}
	
	class DecoyDuck extends Duck{
		/*	모형은 나는 행위,우는 행위, 수영 하는 행위를 못하니까 빈 메소드로 오버라이딩 해야 한다.	*/
		public void fly(){};	public void quack(){};	public void swim(){};
		public void display(){
			logger.debug("모형오리처럼 생겼어요.");
		};
	}
}
